package com.dkm.orproject.dkmoa.service.flow;

import com.dkm.orproject.dkmoa.domain.OaDimissionHandover;
import com.dkm.orproject.dkmoa.domain.OaPersonnel;
import com.dkm.orproject.dkmoa.domain.vo.OaDimissionHandoverVo;

import java.util.List;

/**
 *  @ClassName : OaDimissionHandoverSerivce  //类名
 *  @Description : 离职交接  //描述
 *  @Author : 石智诚  //作者
 *  @Date: 2020-09-16 09:22  //时间
 */
public interface OaDimissionHandoverService {
    /**
     * 起草节点
     * @param handover 交接流程
     * @param personnel 操作人
     * @param pname 离职人
     * @return 回调函数
     */
    int add(OaDimissionHandover handover, OaPersonnel personnel,String pname);

    /**
     * 部门审核(通过)
     * @param pkDimissionHandoverId 交接流程Id
     * @param personnelName 操作人
     * @return 回调函数
     */
    int departmentPass(Long pkDimissionHandoverId, OaPersonnel personnelName);
    /**
     * 部门审核(不通过)
     * @param pkDimissionHandoverId 交接流程Id
     * @param personnelName 操作人
     * @param formReason 不通过的原因
     * @return 回调函数
     */
    int departmentNoPass(Long pkDimissionHandoverId, OaPersonnel personnelName, String formReason);
    /**
     * 行政部填写
     * @param handover 交接流程
     * @param personnelName 操作人
     * @return 回调函数
     */
    int sectionPass(OaDimissionHandover handover, OaPersonnel personnelName);

    /**
     * 当事人确认(通过)
     * @param pkDimissionHandoverId 交接流程Id
     * @param personnel 操作
     * @return 回调函数
     */
    int personPass(Long pkDimissionHandoverId, OaPersonnel personnel);
    /**
     * 行政人事负责人审核(通过)
     * @param pkDimissionHandoverId 交接流程Id
     * @param personnel 操作人
     * @return 回调函数
     */
    int staffingPass(Long pkDimissionHandoverId, OaPersonnel personnel);
    /**
     * 行政人事负责人审核(不通过)
     * @param pkDimissionHandoverId 交接流程Id
     * @param personnel 操作人
     * @param formReason 不通过的原因
     * @return 回调函数
     */
    int staffingNoPass(Long pkDimissionHandoverId, OaPersonnel personnel, String formReason);
    /**
     * 总经理审核(通过)
     * @param pkDimissionHandoverId 交接流程Id
     * @param personnel 操作人
     * @return 回调函数
     */
    int executivePass(Long pkDimissionHandoverId, OaPersonnel personnel);
    /**
     * 总经理审核(不通过)
     * @param pkDimissionHandoverId 交接流程Id
     * @param personnel 操作人
     * @param formReason 不通过的原因
     * @return 回调函数
     */
    int executiveNoPass(Long pkDimissionHandoverId, OaPersonnel personnel, String formReason);

    /**
     * 根据id查询交接
     * @param pkDimissionHandoverId 交接流程Id
     * @return 交接流程模型
     */
    OaDimissionHandover selectById(Long pkDimissionHandoverId);

    /**
     * 更新
     * @param record 交接流程模型
     * @return 回调函数
     */
    int update(OaDimissionHandover record);

    /**
     * 删除
     * @param pkDimissionHandoverId 交接流程Id
     * @return 回调函数
     */
    int deleteByPrimaryKey(Long pkDimissionHandoverId);

    /**
     * 查看所有并进行分页
     * @param handover 交接流程
     * @param page 页面
     * @param limit 显示的数量
     * @param startDate 开始的日期
     * @param endDate 结束的
     * @return 集合
     */
    List<OaDimissionHandover> findAll(OaDimissionHandover handover, Integer page, Integer limit, String startDate, String endDate);

    /**
     * 统计数量
     * @param handover 交接流程
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @return 统计数量
     */
    Long rowCount(OaDimissionHandover handover,String startDate,String endDate);

    /**
     * 根据离职交接Id查询离职交接
     * @param pkDimissionHandoverId 离职交接Id
     * @return 离职交接模型
     */
    OaDimissionHandoverVo findById(Long pkDimissionHandoverId);

    /**
     * 批量查询（批量删除需要）
     * @param list 离职交接的Id 的集合
     * @return 信息的集合
     */
    List<OaDimissionHandover> selectAll(List<Long> list);

    /***
     * 批量删除
     * @param list 离职交接的Id 的集合
     * @return 删除的数量
     */
    int deleteAll(List<Long> list);
}
